
#ifndef BITHANDLERINPUT_H_
#define BITHANDLERINPUT_H_

#include <iostream>
#include <fstream>
#include <bitset>

using namespace std;

/* el BitHandlerInput recibe un caracter por vez,y logra descomponerlos en 8 bits.
 * este puede suministrar esos bits de a uno, secuencialmente a quien se los pida
 * los devuelve en forma de booleanos, de la misma forma q c++ trata a los unos y ceros
 * debido al funcionamiento de bitset, los bits se ordenan al reves en el vector:S
 */

class BitHandlerInput {

 private:
         ifstream archEntrada;
         bitset<8*sizeof(char)> bitSet;
         int indexBitset; // posicion del prox bit q sera devuelto
         bool eofv;
         char vectorBuffer[50];//tamBloque=50;
         int indiceVector;
 public:

         BitHandlerInput();
         BitHandlerInput(const char* fileName, int pos);
         bool siguienteBitEsUno();//getBit();
         void leerSiguienteChar();
         void seek(int pos);
         int tellg();
         bool eof();
         void setEof();
         void resetEof();
         bool eofVirtual();
         bool bufferVacio();
         void llenarBuffer();
         virtual ~BitHandlerInput();
 };


#endif /* BITHANDLERINPUT_H_ */
